package com.didispace.domain;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;


/**
 * @author 程序猿DD
 * @version 1.0.0
 * @date 16/3/23 下午2:34.
 * @blog http://blog.didispace.com
 */
public interface UserRepository extends JpaRepository<User, Long> {

    /**
     * name查询User实体和按name和age查询User实体，可以看到我们这里没有任何类SQL语句就完成了两个条件查询方法。
     * 这就是Spring-data-jpa的一大特性：通过解析方法名创建查询。
     */
    User findByName(String name);

    User findByNameAndAge(String name, Integer age);

    /**
     * @author thomas_liu
     * @date  2018/8/1 19:56
     * @desciption 除了通过解析方法名来创建查询外，它也提供通过使用@Query 注解来创建查询，您只需要编写JPQL语句，
     * 并通过类似“:name”来映射@Param指定的参数，就像例子中的第三个findUser函数一样。
     * @blog http://blog.thomas8341.com
     */
    @Query("from User u where u.name=:name")
    User findUser(@Param("name") String name);


}
